Обновить

Audio calls via I2P. Mumble

Время на прочтение 4 min
Количество просмотров 9.2K

Mumble - This is an application for organizing voice chat. The project is free, the source code of official clients and servers is open. All major operating systems are supported: Linux, MacOS and Windows, as well as iOS and Android. Has good popularity Mumble web client, which allows you to use voice chat through a web browser.

Mumble has excellent audio transmission characteristics and from year to year is gaining a customer base that is moving away from proprietary projects in favor of a lightweight and efficient analogue with a completely open ecosystem.

In this article we will look at the configuration of our own Mumble server operating through a hidden network I2P. The server will use Debian as the operating system and i2pd as an I2P router. The client connection will also be demonstrated on a Debian machine. In practice, differences in client or server operating systems do not change the essence, because the applications used are cross-platform and their configuration looks the same everywhere (including on everyone’s favorite Windows).

server

The voice chat server application is distributed through the standard Debian repositories, so its installation will be limited to a single command: sudo apt install mumble-server. The official Mumble server is called Murmur, but for some reason they decided to call it differently in the Debian repository.

After installation, the configuration file is located in /etc/mumble-server.ini. Open it and first of all specify in the parameter host local address: host=127.0.0.1. An I2P server tunnel will be connected to this address, but the server will not be accessible via the regular Internet. The default port does not need to be changed. We are also interested in the parameter bandwidth, which defines the maximum channel width occupied by one user. After several experiments, the optimal value seems to be bandwidth=48000. The last significant parameter is allowping=true. If suddenly you are in a position false, correct, otherwise it will be impossible to see the delay from the client to the server. For the changes to take effect, restart mumble-server.

Now the most interesting part is the configuration of the I2P tunnels. Mumble uses UDP for streaming audio and TCP for control commands, but can work without it in case of problems with the UDP connection. True, this mode of operation is noticeably more uncomfortable due to delays. Let's create two server tunnels: one for UDP, the other for TCP.

If you still have not installed i2pd, do it according to the official instructions, or get a suitable deb package from git repository. Good stuff for movie lovers video with installation.

In order not to clog the main tunnel configuration file, let's create a new config in the directory /etc/i2pd/tunnels.conf.d/. The file name can be anything, but must end with ".conf". I created a file /etc/i2pd/tunnels.conf.d/mumble-server.conf. As agreed, there are two tunnels in the config:

[mumble-server-tcp]
type = server
host = 127.0.0.1
port = 64738
inport = 64738
inbound.length = 1
outbound.length = 1
i2p.streaming.initialAckDelay = 20
crypto.ratchet.inboundTags = 500
keys = mumble.dat

[mumble-server-udp]
type = udpserver
host = 127.0.0.1
address = 127.0.0.1
port = 64738
inport = 64738
keys = mumble.dat

In general, the parameters of the tunnels are trivial, but you can familiarize yourself with each individually in documentation. Please note that some parameters are not specified in the second tunnel. This is because i2pd applies the tunnel parameters to the key, so after one detailed configuration, the following tunnels with the same key (in the example the key is called mumble.dat) implicitly have the same parameters. If you do not have a key with the specified name, it will be created automatically.

Restart i2pd and go to the web console at http://127.0.0.1:7070. If you are configuring a remote server, you can easily connect to the server's localhost by forwarding the SOCKS port via ssh: $ ssh -D 8888 user@server, where four eights is the port number. By registering a SOCKS proxy in the browser 127.0.0.1:8888, you will be taken to a remote server and can open its local addresses.

In the "I2P tunnels" tab we see the intranet addresses of the created tunnels. They are the same since the same key is used.

Client

You can find a client for the desired operating system on the official downloads page, or in your smartphone's app store. In Debian, installing the client is as easy as installing the server: sudo apt install mumble. i2pd is installed similarly to the server solution.

Time to create client tunnels! Open the file on the client machine /etc/i2pd/tunnels.conf.d/mumble-client.conf and enter the following contents (enter your address):

[mumble-client-tcp]
type = client
address = 127.0.0.1
port = 64738
destination = plpu63ftpi5wdr42ew7thndoyaclrjqmcmngu2az4tahfqtfjoxa.b32.i2p
destinationport = 64738
inbound.length = 1
outbound.length = 1
i2p.streaming.initialAckDelay = 20
crypto.ratchet.inboundTags = 500
keys = transient-mumble

[mumble-client-udp]
type = udpclient
address = 127.0.0.1
port = 64738
destination = plpu63ftpi5wdr42ew7thndoyaclrjqmcmngu2az4tahfqtfjoxa.b32.i2p
destinationport = 64738
keys = transient-mumble

In general, client tunnels are a mirror image of server tunnels. You may have noticed the parameters with the word "length". The server and client tunnels consist of only one transit node. In total, when connecting between the server and the client, there are only two transit servers versus the usual six (three on each side). This compromise is necessary to ensure acceptable voice quality.

When connecting to the server, specify the local address and port specified in the client tunnel (127.0.0.1, 64738). Once the I2P router starts up, it takes a bit of time to create tunnels, so be prepared to wait a minute.

If everything is done correctly, you will see a ping in the list of servers opposite the new server. The screenshot shows two connections to one server: one via Yggdrasil, other via I2P. The difference is several times, but even with a delay of 300-600 milliseconds, Mumble provides a comfortable dialogue.

The most important thing in this configuration, of course, is voice communication, within which the physical location of all interlocutors and the server remains secret. For a test connection, you can use the above client config.

Tags:
Hubs:
Всего голосов 18: ↑17 и ↓1 +16
Комментарии 22

Comments 22

As far as I remember, mumble is just a voice chat, you can’t make a regular call normally? Or something has changed?

Nothing has changed yet. This is mostly a voice chat for gamers, there are no direct calls yet.

Sad, but thanks for the info.

How is voice chat? How's Zello? I’ve been looking for an analogue of Zello for a long time, so that I can raise it on my server.

Mumble is closer to teamspeak or discord, it was originally a chat room for gamers.
I haven’t used it for 10 years, but judging by the screenshots in the UI, nothing much has changed
https://www.mumble.info/client-screenshots/public-server-list.png

List of channels where users connect and can talk either continuously or by pressing the push-to-talk button.
That is, in order to talk to someone you need to either make an agreement in advance like “we’ll meet on Friday at 19:30 on the world of tanks channel” or invite the interlocutor to the desired chat via some other channel.

The usual usage scenario: in the evenings, a clan of some Warcraft, WWII, or Counter-Strike members logs onto the server, looks through the list of channels to understand where the action is now, and enters the desired channel.

iOS.

Not Found

The requested URL was not found on this server.

There is a lot of talk about Matrix, as well as in the community of hidden (and not so hidden) networks. So far, Matrix is ​​not very popular for a number of reasons: the inability to work without HTTPS, cumbersome and unoptimized clients, and an extremely gluttonous server. Unlike what is described, Mumble runs easily even on a “coffee maker”".

I read different things about it for a long time, but recently I decided to set it up. For me it works via nginx reverse proxy with the same https. Although it seems to be able to stand alone as well. In addition, they are now working on other protocols like noise pipes to save traffic. In the example of our operation, the server eats very, very modestly. Clients for Android and Apple work well and reliably. Client usability will be better than telegram. And most importantly, encrypted chats and encrypted groups can be shared between several devices (checkmate telegram).

The main disadvantage of the matrix is ​​that there are no temporary messages.
And as for the usability of Android clients, this is a very big question. But here the markers taste different :)

We use it for work. The interfaces are all right.

I'm sorry. I read about https incorrectly. without https it also works without problems

Thank you. So, we'll watch

How? Not only does it not work without https, but it also does not work with https if the certificate is self-signed. And in general, I tried to get this matrix server up and running, everything keeps crashing, then it’s not there, then it’s not right, then it’ll eat up all the memory... it’s just crap. I just did it about a year ago. Now something has changed?

We have 4 people who have been chasing him in his tail and mane for about 3 weeks now. Correspondence all day long, screenshots, pictures. We didn’t see any memory loss or falls. It really looks like very, very high quality software. Both client and server.

for matrix and jitsi, the yggdrasil network is more suitable than i2p

However, in 2010 I had a voice server for a clan in wot running on it, it was cool.

I thought he was already dead, with so many competitors

We don’t take into account all kinds of discords and video calls on VKontakte.) Free There are few projects of this nature.

Thank you for the article! Interesting solution

Mumble is still a specific gaming software, I don’t even really understand why gamers need i2p. Now, if someone could recommend a similar server that works with hardware phones connected directly to the router, I would be grateful.

Only full-fledged users can leave comments. Sign in, Please.